using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._3DAnalystTools._TINDataset
{
    /// <summary>
    /// <para>Copy TIN</para>
    /// <para>Creates a copy of a triangulated irregular network (TIN) dataset.</para>
    /// <para>创建三角不规则网络 （TIN） 数据集的副本。</para>
    /// </summary>    
    [DisplayName("Copy TIN")]
    public class CopyTin : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CopyTin()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_tin">
        /// <para>Input TIN</para>
        /// <para>The TIN that will be copied.</para>
        /// <para>将复制的 TIN。</para>
        /// </param>
        /// <param name="_out_tin">
        /// <para>Output TIN</para>
        /// <para>The TIN dataset that will be generated.</para>
        /// <para>将生成的 TIN 数据集。</para>
        /// </param>
        public CopyTin(object _in_tin, object _out_tin)
        {
            this._in_tin = _in_tin;
            this._out_tin = _out_tin;
        }
        public override string ToolboxName => "3D Analyst Tools";

        public override string ToolName => "Copy TIN";

        public override string CallName => "3d.CopyTin";

        public override List<string> AcceptEnvironments => ["geographicTransformations", "outputCoordinateSystem", "scratchWorkspace", "tinSaveVersion", "workspace"];

        public override object[] ParameterInfo => [_in_tin, _out_tin, _version.GetGPValue()];

        /// <summary>
        /// <para>Input TIN</para>
        /// <para>The TIN that will be copied.</para>
        /// <para>将复制的 TIN。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input TIN")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_tin { get; set; }


        /// <summary>
        /// <para>Output TIN</para>
        /// <para>The TIN dataset that will be generated.</para>
        /// <para>将生成的 TIN 数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output TIN")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_tin { get; set; }


        /// <summary>
        /// <para>Version</para>
        /// <para><xdoc>
        ///   <para>The version of the output TIN.</para>
        ///   <bulletList>
        ///     <bullet_item>Current—The current TIN version, which supports constrained Delaunay triangulation, enhanced spatial reference information, and storage of node source and edge tag values. The resulting TIN will not be backward compatible with versions of ArcGIS prior to 10.0. This is the default.</bullet_item><para/>
        ///     <bullet_item>Pre 10.0—The TIN will be backward compatible with versions of ArcGIS prior to 10.0, which only supports conforming Delaunay triangulation.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出 TIN 的版本。</para>
        ///   <bulletList>
        ///     <bullet_item>当前 - 当前 TIN 版本，支持受约束的 Delaunay 三角测量、增强的空间参考信息以及节点源和边标签值的存储。生成的 TIN 将不向后兼容 10.0 之前的 ArcGIS 版本。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>10.0 之前 - TIN 将向后兼容 10.0 之前的 ArcGIS 版本，该版本仅支持符合 Delaunay 三角测量要求。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Version")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _version_value _version { get; set; } = _version_value._CURRENT;

        public enum _version_value
        {
            /// <summary>
            /// <para>Pre 10.0</para>
            /// <para>Pre 10.0—The TIN will be backward compatible with versions of ArcGIS prior to 10.0, which only supports conforming Delaunay triangulation.</para>
            /// <para>10.0 之前 - TIN 将向后兼容 10.0 之前的 ArcGIS 版本，该版本仅支持符合 Delaunay 三角测量要求。</para>
            /// </summary>
            [Description("Pre 10.0")]
            [GPEnumValue("PRE_10.0")]
            value0,

            /// <summary>
            /// <para>Current</para>
            /// <para>Current—The current TIN version, which supports constrained Delaunay triangulation, enhanced spatial reference information, and storage of node source and edge tag values. The resulting TIN will not be backward compatible with versions of ArcGIS prior to 10.0. This is the default.</para>
            /// <para>当前 - 当前 TIN 版本，支持受约束的 Delaunay 三角测量、增强的空间参考信息以及节点源和边标签值的存储。生成的 TIN 将不向后兼容 10.0 之前的 ArcGIS 版本。这是默认设置。</para>
            /// </summary>
            [Description("Current")]
            [GPEnumValue("CURRENT")]
            _CURRENT,

        }

        public CopyTin SetEnv(object geographicTransformations = null, object outputCoordinateSystem = null, object scratchWorkspace = null, object tinSaveVersion = null, object workspace = null)
        {
            base.SetEnv(geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, scratchWorkspace: scratchWorkspace, tinSaveVersion: tinSaveVersion, workspace: workspace);
            return this;
        }

    }

}